package model

import (
	"time"

	"github.com/shopspring/decimal"
	"gorm.io/gorm"
)

type OrganizationTransfer struct {
	InfoID        uint             `gorm:"primaryKey;autoIncrement;column:info_id"`       // 主键自增[5](@ref)
	Title         string           `gorm:"type:varchar(255);not null"`                    // 转让标题（非空）
	City          string           `gorm:"type:varchar(20);not null;index:idx_city_time"` // 城市+联合索引[3](@ref)
	Area          *decimal.Decimal `gorm:"type:decimal(10,2)"`                            // 面积（指针表示可空）
	TransferPrice decimal.Decimal  `gorm:"type:decimal(10,2);not null"`                   // 转让价格（强制非空）
	Department    *string          `gorm:"type:varchar(50)"`                              // 科室（指针表示可空）
	Brief         *string          `gorm:"type:text"`                                     // 简介（长文本）
	Details       *string          `gorm:"type:longtext"`                                 // 详细介绍（超长文本）
	ContactPerson string           `gorm:"type:varchar(50);not null"`                     // 实名联系人
	ContactInfo   string           `gorm:"type:varchar(50);not null"`                     // 联系方式（非空）
	PublishTime   time.Time        `gorm:"autoCreateTime;index:idx_city_time"`            // 发布时间+联合索引[5](@ref)
	UserID        uint             `gorm:"index;not null"`                                // 外键索引[1](@ref)
	IsDeleted     bool             `gorm:"column:is_deleted;default:false;comment:是否已软删除"`
}

// 自定义表名（遵循蛇形复数规则）
func (OrganizationTransfer) TableName() string {
	return "organization_transfer"
}

// 关联用户扩展方法（需User模型存在）
func (o *OrganizationTransfer) User(db *gorm.DB) (*User, error) {
	var user User
	if err := db.Where("user_id = ?", o.UserID).First(&user).Error; err != nil {
		return nil, err
	}
	return &user, nil
}
